<?php
require_once(FWK_EXCEPTION."CustonException.class.php");
require_once(BIB_ACTIVE_RECORD);
require_once(FWK_MODEL."AbsModelDao.class.php");
require_once(FWK_MODEL."Upload.class.php");
require_once(FWK_UTIL."FormataDatas.class.php");
/**
 * Classe modelo para os estabelecimentos credenciados
 *
 * @author Vinicius Rodrigues <viniciusmr3@gmail.com>
 * @since 1.0 - 02/02/2012
 */
class Credenciado extends AbsModelDao{

	public $_table = "credenciados";

	public $_id = "id_credenciado";
	
	public function getIdCredenciado(){
    	return $this->id_credenciado;
    }
    
    public function setIdCredenciado($idUser){
    	$this->id_credenciado = $idUser;
    }

    public function getNomeCredenciado(){
    	return utf8_encode($this->nome_credenciado);
    }
    public function setNomeCredenciado($nomeUser){
    	$this->nome_credenciado = $nomeUser;
    }

    public function getUltimoAcesso(){
    	return $this->ultimo_acesso;
    }
    public function setUltimoAcesso($datAcesso){
    	$this->ultimo_acesso = $datAcesso;
    }
    
    public function getDataLogin(){
    	return $this->_dataLogin;
    }
    public function setDataLogin($datLogin){
    	$this->_dataLogin = $datLogin;
    }

    public function getIpCredenciado(){
    	return $this->_ipUsr;
    }
    public function setIpCredenciado($strIp){
    	$this->_ipUsr = $strIp;
    }

    public function getHostCredenciado(){
    	return $this->_strHostRemoto;
    }
    public function setHostCredenciado($strHost){
    	$this->_strHostRemoto = $strHost;
    }

    public function getEmailUser(){
    	return $this->email;
    }
    public function setEmailUser($strEmail){
    	$this->email = $strEmail;
    }
    
    public function getCnpjCredenciado(){
    	return $this->cnpj_credenciado;
    }
    
    public function setCnpjCredenciado($cnpj_credenciado) {
    	$this->cnpj_credenciado = $cnpj_credenciado;
    }

    public function verUserVisit(){
    	if($this->id_credenciado == "000" && $this->nome_credenciado = "Visitante")
    		return false;
    	return true;
    }

	public function getListaGrid($limitIni=0, $numRegs=15, $count=false){
		$strQuery = "SELECT ";
		if($count){
			$strQuery.= " count(id_credenciado) ";
		}else{
			$strQuery .= "id_credenciado as 'Código',nome_credenciado as 'Nome', c.nome_categoria as 'Categoria',
						  cnpj_credenciado as 'CNPJ' ";
		}
		$strQuery .= " FROM
					 		".$this->_table." a LEFT JOIN categoria_estabelecimento c ON c.id_categoria = a.id_categoria "
										." ORDER BY nome_credenciado asc ";
		if(!$count){
			$strQuery .= " LIMIT
								".$limitIni." ,".$numRegs;
		}
		
		$arrRet = ControlDB::getAll($strQuery,3);
		return $arrRet;
	}
	
	public function getListaCredenciados(){
		$strQuery = "SELECT
							id_credenciado, c.id_categoria, c.nome_categoria as nome_categoria, id_endereco,
							nome_credenciado, cnpj_credenciado
					 FROM 
					 		".$this->_table." a LEFT JOIN categoria_estabelecimento c ON c.id_categoria = a.id_categoria ";
		$arrRet = ControlDB::getAll($strQuery,3);
		return $arrRet;
	}

	public function alterar($id=null,$post,$file){
		try{
			self::salvaPostAutoUtf8($post);
			
			$this->id_credenciado = $id;
			
			/**
			 * UPLOAD DO ARQUIVO
			 */			
			parent::uploadArquivoFwk("img1_credenciado", $this->id_credenciado, $file, PASTA_UPLOADS_ARQUIVOS."credenciado/");
			parent::uploadArquivoFwk("img2_credenciado", $this->id_credenciado, $file, PASTA_UPLOADS_ARQUIVOS."credenciado/");
			parent::uploadArquivoFwk("img3_credenciado", $this->id_credenciado, $file, PASTA_UPLOADS_ARQUIVOS."credenciado/");
			parent::uploadArquivoFwk("img4_credenciado", $this->id_credenciado, $file, PASTA_UPLOADS_ARQUIVOS."credenciado/");
			
			self::replace();
			if(self::ErrorMsg()){
				print("<pre>");
				print_r($post);
				die("<br/><br /><h1>".self::ErrorMsg()."</h1>");
			}
		}catch(DaoException $e){
			throw new CustonException($e->getMensagem());
		}
	}
	
	/**
	 * Método para verificar a existencia de um credenciado por login no banco de dados
	 *
	 */
	public function validaCredenciadoDB($strCnpj,$strPassw){
		$strQuery = "SELECT * FROM ".$this->_table." where cnpj_credenciado = '".$strCnpj."' AND ".
					   " senha = '".base64_encode(md5($strPassw))."' ";
		$arrRet = ControlDB::getRow($strQuery,0);
		if(!isset($arrRet["id_credenciado"]) && count($arrRet)<5 )
			throw new CustonException("Usuário e/ou Senha Inválidos!");
		self::setObjCredenciado($arrRet);
		
		//self::registraAcesso($arrRet["id_credenciado"]);
		
		return $arrRet;
	}
	
	/**
	 * Metodo para verificar a existencia de um usuario por email e cpf na recuperacao de senha
	 *
	 * @author Vinicius Rodrigues <viniciusmr3@gmail.com>
	 * @since 1.0 - 27/11/2012
	 * @param String $cpf: cpf do usuario
	 * @param String $email: email do usuario
	 */
	public function validaCredenciadoPorCnpjEmail($email, $cnpj){
		$strQuery = "SELECT * FROM ".$this->_table." where email = '".$email."' AND ".
					   " cnpj_credenciado = '".$cnpj."' ";
		$arrRet = ControlDB::getRow($strQuery,0);
		
		if(!isset($arrRet["id_credenciado"]) && count($arrRet)<5 )
			throw new CustonException("Email e/ou CNPJ Invalidos!");
		self::setObjCredenciado($arrRet);
		
		//self::registraAcesso($arrRet["id_usuario"]);
		//base64_encode(md5($senha))
		return $arrRet;
	}
	
	/**
	 * Seta um objeto usu√°rio a partir dos dados vindos do banco de dados
	 *
	 * @author Vinicius Rodrigues <viniciusmr3@gmail.com>
	 * @since 1.0 - 27/11/2012
	 * @param Array arrDados vetor com os dados do usuario vindo do banco de dados
	 */
	public function setObjCredenciado($arrDados){
		self::setIdCredenciado($arrDados["id_credenciado"]);
    	self::setNomeCredenciado($arrDados["nome_credenciado"]);
    	self::setEmailUser($arrDados["email"]);
    	self::setIpCredenciado($_SERVER["REMOTE_ADDR"]);
    	self::setHostCredenciado($_SERVER["REMOTE_HOST"]);
    	self::setCnpjCredenciado($arrDados["cnpj_credenciado"]);
    	self::setDataLogin(time());
	}
	
	public function getDadosCombo(){
		$strQuery = "SELECT
							id_credenciado, nome_credenciado
					 FROM 
					 		".$this->_table." ORDER BY nome_credenciado asc ";
		$arrRet = ControlDB::getAll($strQuery,3);
		return $arrRet;
	}

}
?>